node.jsのいろいろなモジュール7 – js-optsでコマンドライン引数を使う
optsを使ってコマンドライン引数を使う
node.jsで、プログラム実行時にコマンドライン引数を渡して実行したい場合、みなさんはどうしていますか? process.argv変数を参照すれば指定された引数を取ることができますが、js-optsモジュール ※1を使用すればもっと簡単に行うことができます。 今回はコマンドライン引数を扱うためのjs-optsについてご紹介します。
インストール
今回使用した動作環境は以下のとおりです。
- OS : MacOS X 10.7.1
- Node.js : v0.4.11
- npm : 1.0.30
ではnpmを使用してインストールしましょう。
% npm install opts
インストールできたらnpmコマンドで確認します。
%npm list /path/your/app └── [email protected] extraneous
インストールできたので、サンプルを動かしてみましょう。
サンプルを動かしてみる
公式サイトにもあるExample1を動かしてみます。 このサンプルは-vか--versionでバージョン情報を表示して終了します。 普通に実行した場合は通常の処理だけを実行して終了します。
var opts = require('opts'); var options = [ { short : 'v' , long : 'version' , description : 'Show version and exit' , callback : function () { console.log('v1.0'); process.exit(1); } } ]; opts.parse(options, true); console.log('Example 1'); process.exit(0);
optsモジュールを読みこみ、parse関数でコマンドライン引数のパースを実施しています。 parseに渡すoptionsオブジェクトで、引数のパラメータや処理を記述しています。 実行結果は下記のようになります。
%node test.js Example 1 %node test.js -v v1.0 %node test.js --version v1.0 %node test.js --help Usage: node /path/your/app/test.js [options] Show this help message --help Show version and exit -v, --version %node test.js -x test Unknown option: -x Try --help
指定した以外のパラメータはエラーになりますが、例外的に--helpオプションだけはデフォルトで用意されています。
もうひとつサンプルを作成してみます。 このサンプルでは指定したポート番号でhttpサーバーを起動するようにしてみます。
var http = require('http'); var opts = require('opts'); opts.parse([ { 'short': 'p', 'long': 'port', 'description': 'port number', 'value': true, 'required': false }, ]); var port = opts.get('port') || 3000; http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(port, "127.0.0.1"); console.log('Server running at http://127.0.0.1:' + port);
opts.get関数を使用して、指定されたportオプションを取得して、その番号で起動しています。
%node test.js -p 3939 Server running at http://127.0.0.1:3939
まとめ
今回はコマンドライン引数を楽に扱えるモジュールを紹介させていただきました。 1つのアプリケーションを別ポートで複数台立ち上げたい場合などは手軽に扱えて便利だと思います。